import { _decorator, Component, Node, Button, director } from 'cc';
const { ccclass, property } = _decorator;

/**
 * 主菜单场景
 * 负责显示游戏主菜单和处理菜单交互
 */
@ccclass('MainMenuScene')
export class MainMenuScene extends Component {
    @property(Button)
    private startButton: Button = null;
    
    @property(Button)
    private settingsButton: Button = null;
    
    @property(Button)
    private quitButton: Button = null;
    
    @property(Node)
    private settingsPanel: Node = null;
    
    // 生命周期函数
    onLoad() {
        // 注册按钮点击事件
        if (this.startButton) {
            this.startButton.node.on(Button.EventType.CLICK, this.onStartGame, this);
        }
        
        if (this.settingsButton) {
            this.settingsButton.node.on(Button.EventType.CLICK, this.onShowSettings, this);
        }
        
        if (this.quitButton) {
            this.quitButton.node.on(Button.EventType.CLICK, this.onQuitGame, this);
        }
        
        // 初始化设置面板
        if (this.settingsPanel) {
            this.settingsPanel.active = false;
        }
    }
    
    onDestroy() {
        // 移除事件监听
        // 在移除事件监听前先检查button和button.node是否有效
        if (this.startButton && this.startButton.isValid && this.startButton.node && this.startButton.node.isValid) {
            this.startButton.node.off(Button.EventType.CLICK, this.onStartGame, this);
        }
        
        if (this.settingsButton && this.settingsButton.isValid && this.settingsButton.node && this.settingsButton.node.isValid) {
            this.settingsButton.node.off(Button.EventType.CLICK, this.onShowSettings, this);
        }
        
        if (this.quitButton && this.quitButton.isValid && this.quitButton.node && this.quitButton.node.isValid) {
            this.quitButton.node.off(Button.EventType.CLICK, this.onQuitGame, this);
        }
    }
    
    /**
     * 开始游戏
     */
    private onStartGame(): void {
        // 加载游戏主场景
        director.loadScene('GameScene');
    }
    
    /**
     * 显示设置面板
     */
    private onShowSettings(): void {
        if (this.settingsPanel) {
            this.settingsPanel.active = true;
        }
    }
    
    /**
     * 退出游戏
     */
    private onQuitGame(): void {
        // 在网页环境中，显示提示信息
        if (window) {
            alert('感谢游玩！');
        }
        // 在原生环境中，退出应用
        else {
            // @ts-ignore
            if (window.close) {
                // @ts-ignore
                window.close();
            }
        }
    }
} 